<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of coneccionbdd
 *
 */
class coneccionbdd {

//propiedades
    public $conexion;
    private $server = 'localhost';
    private $usuario = 'root';
    private $clave = '';
    private $bd = 'inventario';

    //put your code here
    /**
     * Metodo en el cual realizamos la conexion con la bdd 
     * 
     * @param type $host
     * @param type $user
     * @param type $pass
     * @param type $bdd
     * @return boolean=false cuando la conexion es invalida,y retorna l objeto conectar si es factible
     */
    public static function getConectar($host = "localhost", $user = "root", $pass = "", $bdd = "inventario") {
        $conecta = mysqli_connect($host, $user, $pass, $bdd);
        /* comprobar la conexión */
        if (mysqli_connect_errno()) {
            return false;
        }
        return $conecta;
    }

    //METODOS
    //Conectarse a la DB
    public function ConectarDB() {
        $this->conexion = @new mysqli($this->server, $this->usuario, $this->clave, $this->bd);
        if ($this->conexion->connect_error)
            die('Error de Conexion :(');
    }

    //Desconectarse a la DB
    public function DesconectarDB() {
        $this->conexion->close();
    }

    //Ejecuta un query y retorna el resultado en un Array
    //Solo utilizar cuando el resultado del Query provenga de un Select
    //Ya sea un Select Directo o dentro de un SP
    public function ObtenerResultado($QueryString) {
        $this->ConectarDB();
        $Resultado = $this->conexion->query($QueryString); //Ejecucion del Query
        $Datos = array(); //Declaracion Array donde almacenaremos nuestros datos
        $i = 0;
        while ($fila = $Resultado->fetch_array()) {
            $Datos[$i] = $fila;
            $i++;
        }
        $this->DesconectarDB();

        return $Datos;
    }

    public function setInsertDataCliente($QueryString, $params, $tipos) {
        $this->ConectarDB();
        $execute = false;
        /* create a prepared statement */
        if ($stmt = $this->conexion->prepare($QueryString)) {
//            mysqli_stmt_bind_param($stmt, $tipos, $params[0], $params[1], $params[2], $params[3], $params[4], $params[5], $params[6], $params[7], $params[8]);
            mysqli_stmt_bind_param($stmt, $tipos, $params[0], $params[1], $params[2], $params[3], $params[4], $params[5], $params[6], $params[7], $params[8]);
            $execute = mysqli_stmt_execute($stmt);
            mysqli_stmt_close($stmt); // CLOSE $stmt
        } else {
            echo "Prepare failed: (" . $this->conexion->errno . ") " . $this->conexion->error;
        }
        return $execute;
    }

    public function getSelectDataProductoVentas($QueryString, $params, $tipos, $tipo_filtro) {
        $this->ConectarDB();
        $execute = false;
        var_dump($QueryString);
//        die();
        /* create a prepared statement */
        if ($stmt = $this->conexion->prepare($QueryString)) {
//            mysqli_stmt_bind_param($stmt, $tipos, $params[0], $params[1], $params[2], $params[3], $params[4], $params[5], $params[6], $params[7], $params[8]);
            if ($tipo_filtro) {
                mysqli_stmt_bind_param($stmt, $tipos, $params[0], $params[1], $params[2], $params[3], $params[4]);
            } else {
                mysqli_stmt_bind_param($stmt, $tipos, $params[0], $params[1], $params[2], $params[3]);
            }
            $execute = mysqli_stmt_execute($stmt);
            mysqli_stmt_close($stmt); // CLOSE $stmt
        } else {
            echo "Prepare failed: (" . $this->conexion->errno . ") " . $this->conexion->error;
        }
        return $execute;
    }

    /**
     * //Para obtener el resultado de ejecutar un query que no devuelve datos, como Insert,Delete,Update.
      //Resultado retorna TRUE si el query se ejecuto correctamente.
     * @param String $QueryString
     * @return true o false
     */
    public function setRealizarConsulta($QueryString) {
        $this->ConectarDB();
        $Resultado = $this->conexion->query($QueryString);
        $this->DesconectarDB();
        Return $Resultado;
    }

}
